/// \file MeshDX9.h
/// \date 2012-12-08
/// \brief concrete class in DX9 that models a mesh 

#ifndef _TORUSPRORENDERING_RENDER_MESHDX9_H__
#define _TORUSPRORENDERING_RENDER_MESHDX9_H__

// DX9
#include <d3d9.h>
#include <d3dx9.h>

#include <Render/Include/Mesh.h>
namespace Render
{

/// \brief concrete class in DX9 that models a mesh 
class MeshDX9 : public Mesh
{
    /// \brief RendererDx9 is the only one that can create, destroy and use this class 
    friend class RendererDX9;

private:
    // ========== INTERNAL METHODS ========== //
    
    /// \brief Constructor, receives the mesh info already created
    MeshDX9(LPD3DXMESH p_mesh);
    
    /// \brief Destructor, releases the mesh
    virtual ~MeshDX9(void);
    
    /// \brief return DX9Mesh structure pointer
    LPD3DXMESH getLPD3DXMESH();
    
    // ========== ATTRIBUTES ========== //
    
    /// \brief mesh info
    LPD3DXMESH p_mesh;
};
};
#endif // _TORUSPRORENDERING_RENDER_MESHDX9_H__
